package viewDeLivreur;

import java.util.regex.*;
import java.awt.event.*;
import java.awt.GridLayout;

import javax.swing.*;
public class VueAdresseLivreur extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel fenetre;
	private JButton boutonOk;
	private JLabel numeroLabel;
	private JLabel rueLabel;
	private JLabel villeLabel;
	private JLabel codePostal;
	
	private JTextField numeroLivreur;
	private JTextField rueLivreur;
	private JTextField villeLivreur;
	private JTextField postalLivreur;
	
	public String numeroCivique;
	public String rue;
	public String ville;
	public String postal;
	
	final String province = "QC";
	final String pays = "Canada";
	
	private AdresseLivreurListener l = new AdresseLivreurListener();
	
	
	public static void main(String args[]){
		VueAdresseLivreur vue = new VueAdresseLivreur();
		vue.addAdresseLivreurListener(vue.l);
	}
	
	public VueAdresseLivreur(){
		
		numeroLabel = new JLabel();
		numeroLabel.setText("Numéro civique :");
		numeroLivreur = new JTextField(15);

		rueLabel = new JLabel();
		rueLabel.setText("Rue :");
		rueLivreur = new JTextField(15);
		
		villeLabel = new JLabel();
		villeLabel.setText("Ville :");
		villeLivreur = new JTextField(15);
		
		codePostal = new JLabel();
		codePostal.setText("Code postal :");
		postalLivreur = new JTextField(15);
		
		boutonOk = new JButton("Confirmer");
		

		fenetre = new JPanel(new GridLayout(6, 2));
		fenetre.add(numeroLabel);
		fenetre.add(numeroLivreur);
		
		fenetre.add(rueLabel);
		fenetre.add(rueLivreur);
		
		fenetre.add(villeLabel);
		fenetre.add(villeLivreur);
		
		fenetre.add(codePostal);
		fenetre.add(postalLivreur);
		
		fenetre.add(boutonOk);
		add(fenetre);
		setTitle("Emplacement du livreur");
		
	    setSize(300,100);
	    setVisible(true);
	}
	
	public void addAdresseLivreurListener(ActionListener listener){
		boutonOk.addActionListener(listener);
	}

	private class AdresseLivreurListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			numeroCivique = numeroLivreur.getText();
			postal = postalLivreur.getText();
			
			
			/* Valider le numéro civique. Il doit contenir seulement des chiffres
			 * 
			 * L'expression régulière ci-dessous est prise du site
			 * "Programmer's Heaven" à la section 
			 * "Matching a String Against A Pattern" à l'adresse suivante :
			 * http://www.programmersheaven.com/2/RegexJAVA
			 */
			if(Pattern.matches("^\\d+$", numeroCivique) == false){
				JOptionPane.showMessageDialog(fenetre, "Numéro civique invalide",
						"Error", JOptionPane.ERROR_MESSAGE);
			}
			
			/* Valider le code postal. Il doit être composé de 3 chiffres et 3 lettres 
			 * L'expression régulière utilisée a été prise sur le site RegExLib.com.
			 * Son auteur est Steven Smith et il a posté cette expression régulière
			 * à l'adresse suivante : 
			 * 
			 * http://regexlib.com/REDetails.aspx?regexp_id=23
			 * */
			if(Pattern.matches("^\\d{5}-\\d{4}|\\d{5}|[A-Z]\\d[A-Z] \\d[A-Z]\\d$", postal) == false){
				JOptionPane.showMessageDialog(fenetre, "Code postal invalide",
						"Error", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	
}
